Solving 10385 - Duathlon (Ternary search)
[and.git] / 10233 - Dermuba triangle / 10233.cpp
blob47c333db057f4e5945d49925b865a364a434122e
1 #include <iostream>
2 #include <math.h>
3 using namespace std;
5 int dameFila(unsigned int n){
6 return int(ceil(sqrt(n+1)));
9 int dameColumna(unsigned int n){
10 int miFila = dameFila(n);
11 int centro = miFila*(miFila-1);
12 return n - centro;
15 const double altura = sqrt(3)/2.0;
17 double dameY(unsigned int a){
18 double ay;
19 int fila_a, columna_a;
20 columna_a = dameColumna(a);
21 fila_a = dameFila(a);
22 if (fila_a & 1){
23 ay = (fila_a-1)*altura;
24 if (columna_a & 1) ay -= altura/3.0;
25 }else{
26 ay = altura*((fila_a-2) + 2.0/3.0);
27 if (columna_a & 1) ay += altura/3.0;
29 return ay;
32 int main(){
33 unsigned int a, b;
34 double ax, ay, bx, by;
35 while (cin >> a >> b){
36 //cout << "fila de a es " << dameFila(a) << endl;
37 //cout << "columna de a es " << dameColumna(a) << endl;
38 ax = 0.5 * dameColumna(a);
39 ay = dameY(a);
41 bx = 0.5 * dameColumna(b);
42 by = dameY(b);
44 //cout << ax << ", " << ay << endl;
45 printf("%.3f\n", hypot(ax-bx, ay-by));
47 return 0;